SCRUM - Metodología de desarrollo de software ágil
Para aquellos proyectos en los que los requisitos no están del todo determinados al inicio (debido a la variabilidad de agentes externos que influyen directamente en el proyecto) o que requieren mucha flexibilidad y rapidez, utilizamos metodologías de desarrollo ágil de software, concretamente la metodología SCRUM adaptada a nuestra operativa y procesos.
Desarrollo iterativo e incremental a base de sprints
Realmente se basa en una serie de herramientas para la gestión y el control de proyecto día a día tomando como base del desarrollo iterativo de proyectos de software.
Siguiendo esta metodología, el desarrollo del proyecto se basa en la creación de una base del software sobre el que se van integrando mejoras incrementales supervisadas por el cliente.
El desarrollo se organiza en sprints, generalmente quincenales, sobre los que se definen objetivos y se analizan, planifican y desarrollan las tareas que cumplen los requisitos establecidos por el cliente en ese periodo de tiempo (sprint). Cada sprint se toma como un proyecto en sí mismo con sus correspondientes planificaciones, reuniones de seguimiento diarias, etc.
Roles del proyecto
Dentro de la metodología basada en SCRUM adoptada por 4nett se identifican, para este tipo de proyecto, los siguientes roles.
- Jefe de Proyecto / Scrum Master. Se encarga de gestionar con el cliente (con el keyuser) el proyecto ayudándole en la definición, en la definición y en la obtención de los requisitos de cada sprint. Es la interfaz de comunicación entre el cliente y el equipo.
- Key user / Product Owner. El usuario clave del proyecto es, generalmente, un usuario del cliente que valida cada sprint y participa en la definición y toma de requisitos de cada uno de los sprints.
- El equipo de desarrolladores. Formado por programadores, diseñadores y testeadores que realizan las tareas coordinados y gestionados por el Jefe de Proyecto según se definan en los sprints y la planificación diaria. Estiman con el Jefe de Proyecto cada una de las tareas que formarán el sprint.
Definición de sprints y planificación continua
El Jefe de proyecto, conjuntamente con el cliente define cada sprint. Es decir, define qué va a entrar en el bloque de desarrollo para los 15 días siguientes, cuáles son los objetivos, prioridades y requisitos de dicho sprint. En ese momento el equipo se centra en el sprint concreto, en su definición, desarrollo y control.
- Definición y planificación de sprints. El keyuser y el Jefe de proyecto se centran en los requisitos concretos del sprint dividiendo el ‘problema’ en un bloque controlable y centrándose únicamente en los objetivos del sprint en curso.
- Tareas. El jefe de proyecto conjuntamente con el equipo de desarrollo identifica las tareas del sprint estimando el esfuerzo de cada una de las tareas (horas). Tras esta estimación se planifica las tareas que se realizarán diariamente.
- Control diario / Daily Stand Meeting. En una reunión de no más de 10-15 minutos, el Jefe de Proyecto y el equipo de desarrolladores se reúnen para analizar ¿Qué se hizo ayer?¿Que se va a hacer hoy?¿Qué necesidades tiene el equipo para las tareas de hoy?.
En función de esta reunión se reorganizan las tareas del sprint y se contacta con el keyuser para resolver las dudas que hayan surgido.
De esta manera, si surge alguna duda o problema durante el desarrollo se identificará en el momento adecuado (no al final del proyecto) con el margen suficiente para poder solucionarlo y terminar el proyecto satisfactoriamente en tiempo y presupuesto acordado.
Calidad de cada sprint
Cada una de las tareas se realiza siguiendo la metodología estándar de desarrollo de proyectos de 4nett para garantizar la calidad del desarrollo. Así, tras el análisis, toma de requisitos y planificación de cada tarea en cada sprint, se pasa el diseño y desarrollo de la tarea.
En la etapa de control de calidad de cada sprint, y tras la congelación de código de la versión beta del proyecto con el nuevo sprint incluido, se realizarán las pruebas de integración, seguridad, rendimiento y funcionales en el entorno de seguimiento, garantizando la calidad del software.
Entorno de seguimiento con el cliente
Durante el desarrollo de cualquier proyecto, y con más motivo en el uso de metodología SCRUM, proporcionamos al cliente (al keyuser) un entorno de seguimiento con las mismas características que el de producción para realizar el seguimiento del proyecto.
De esta forma el cliente podrá seguir la evolución del proyecto y ver cómo van tomando forma las funcionalidades identificadas en cada sprint teniendo margen para modificarlas y adaptarlas, en funcionalidad, diseño y usabilidad, a la usabilidad del cliente y del usuario final.
En el entorno de seguimiento el cliente, conjuntamente con el Jefe de Proyecto realiza la validación final ejecutando los UAT (User Acceptance Test) adecuados.
Ventajas del SCRUM para proyectos software de 4Nett
Para proyectos con posible variabilidad de requisitos ( o dificultad por parte del cliente para determinar claramente todos los requisitos), esta metodología aporta una serie de ventajas entre las que destacamos:
- Mejora la visibilidad del progreso del proyecto.
- Disminuye el riesgo de error en planificación.
- Reduce el efecto de ‘plazo límite’ del desarrollo, creando entregas continuas en cada sprint.
- Ayuda a identificar requisitos no identificados inicialmente con la capacidad de incorporarlos a tiempo en la solución final.
- El cliente está al tanto, en todo momento, del avance real del proyecto.
- El cliente, vía el KeyUser participa activamente en el diseño del software.
- La solución final se alinea a la realidad y necesidad real del cliente.